module vlib.Types;

package import 

	tango.core.Memory ,
	tango.sys.win32.CodePage,
	tango.sys.Environment,
	tango.sys.Common,
	
	B64	= tango.util.encode.Base64,
	Txt	= tango.text.Util,
	Int	= tango.text.convert.Integer,
	Flo	= tango.text.convert.Float ,
	Utf	= tango.text.convert.Utf,
	TimS = tango.text.convert.TimeStamp ,
	
	tango.text.json.Json ,
	tango.text.convert.Format,
	
	tango.time.Clock,
	tango.time.Time,
	tango.time.StopWatch,
	
	tango.stdc.time,
	tango.stdc.string,
	tango.stdc.stringz,
	tango.stdc.errno,
	
	tango.core.Thread , 
	tango.core.Memory,
	tango.core.Array , 
	tango.core.sync.Atomic,
	tango.core.sync.Mutex,
	tango.core.Traits,
	
	Pth	= tango.io.Path ,
	tango.io.FilePath,
	tango.io.device.Array,
	tango.io.device.File,
	tango.io.stream.Zlib,
	tango.io.stream.Format,
	
	tango.net.Uri,
	tango.net.InternetAddress,
	tango.net.device.Berkeley,
	tango.net.http.HttpConst;

version(Windows){
	public import
		tango.sys.win32.UserGdi ,
		tango.sys.win32.WsaSock ;
}

package import 

	vlib.Lib,

	vlib.util.Log ,
	vlib.util.Ini ,
	vlib.util.Byte ,
	vlib.util.Text ,
	vlib.Util.Event,
	vlib.util.Pcre,

	vlib.io.Token ,
	vlib.io.Buffer ,
	vlib.io.B62 ,
	vlib.io.Stream ,
	vlib.io.Quene ,

	vlib.ev.c ,
	vlib.ev.fcgi.Process ,
	vlib.ev.fcgi.Proxy ,

	vlib.ev.dns.Parser ,
	vlib.ev.dns.Server ;

version(Windows){
	private import tango.io.Console;
	extern(C){
   		private int _open_osfhandle (void*, int);
		private  int close(int);
		private int _get_osfhandle(int);
	}
	
	static int fd_counts ;
	
	int osf_open(void* handle){
		// log!(__FILE__,__LINE__)("open_fd:	count:{}", fd_counts );
		int fd	= _open_osfhandle(handle, 0) ;
		if( fd <=0 ) {
			log!(__FILE__ , __LINE__)("fd_count:{},  {}:{}:{}", fd_counts,  handle , .errno, SysError.lastMsg );
			auto bu	= new vBuffer(1024, 1024);
			log!(__FILE__ , __LINE__)("{}",  cast(char[]) bu.slice );
			Cin.get;
			assert(false);
		}
		fd_counts++;
		return fd ;
	}
	int osf_close(int fd){
		// log!(__FILE__,__LINE__)("close_fd:	count:{}", fd_counts );
		int ret	= close(fd);
		if( ret !is 0 ){
			log!(__FILE__,__LINE__)("fd_count:{},  osf_close:{} error:{}, sys:{}", fd_counts,  ret  , .errno, SysError.lastMsg );
		}
		fd_counts--;
		return ret ;
	}
}